<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>留言板</title>

</head>
<body>
    <style>
        * {
            /* 去除浏览器默认样式 */
            margin: 0;
            padding: 0;
            /* 不让边框和外边距撑大盒子 */
            box-sizing: border-box;
        }

        .container {
            width: 400px;
            height: 370px;
            margin: 100px auto;
            border: #000;
            border-style: solid;
            background-color: rgb(48, 108, 219);
        }

        h3 {
            text-align: center;
            /* 内边距, 上下 20px, 左右 0 */
            padding: 35px 0;
            font-size: 30px;
        }

        p {
            text-align: center;
            color: #bbb;
            padding: 10px 0;
        }

        .row {
            width: 300px;
            height: 50px;
            /* 元素水平居中 */
            margin: 0 auto;

            display: flex;
            justify-content: center;
            align-items: center;

            font-weight: 600;
        }

        .row span {
            width: 60px;
            font-size: 20px;
        }

        .row input {
            width: 240px;
            height: 40px;
            /* 文字垂直居中 */
            line-height: 40px; 
            font-size: 20px;
            /* 缩进 */
            text-indent: 0.5em;

            /* 去掉输入框的轮廓线 */
            outline: none;
        }

        .row #submit {
            width: 70px;
            height: 40px;
            font-size: 20px;
            line-height: 40px;

            color: #fff;
            background-color: orange;

            /* 去掉边框 */
            border: none;
            /* 圆角矩形 */
            border-radius: 10px;
        }

        /* 伪类选择器 */
        /* 点击按钮改变颜色 */
        .row #submit:active {
            background-color: grey;
        }
    </style>

    <div class="container">
        <h3>留言板</h3>
        <p>输入后点击提交, 会将信息显示在表格中</p>
        <div class="row">
            <span>谁: </span>
            <input type="text">
        </div>
        <div class="row">
            <span>对谁: </span>
            <input type="text">
        </div>
        <div class="row">
            <span>说: </span>
            <input type="text">
        </div>
        <div class="row">
            <button id="submit">提交</button>
        </div>
    </div>
    
    <!-- 引入 Jquery 依赖-->
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
    <script>
        // 加入 ajax 代码
        // 点击提交按钮, ajax 将数据构造为 post 请求, 发给服务器

        // 页面加载的时候, 从服务器获取消息列表, 并在页面上显示
        function getMessages() {
            $.ajax({
                type: 'get',
                url: 'message',
                success: function(body) {
                    // 响应的 body 是一个 json数组
                    // ajax 会自动把 body 转为 js 对象
                    // 如果不自动转, 也可以通过 JSON.parse() 手动转

                    let container = document.querySelector('.container');
                    for (let message of body) {
                        // 循环依次取数组中的每个元素
                        let newDiv = document.createElement('div');
                        newDiv.innerHTML = message.from + ' 对 ' + message.to + ' 说：' + message.message;
                        newDiv.className = 'row';
                        container.appendChild(newDiv);
                    }
                }
            });
        }
        // 函数调用
        getMessages();


        // 当用户点击提交, 就会获取到 input 中的内容
        // 然后将内容构造成一个 div, 插入到页面末尾
        submit.onclick = function() {
            // 1. 获取 3 个 input 中的内容
            let inputs = document.querySelectorAll('input');
            let from = inputs[0].value;
            let to = inputs[1].value;
            let msg = inputs[2].value;
            if (from == '' || to == '' || msg == '') {
                return;
            }

            // 2. 生成一个新的 div, 内容就是 input 里的内容
            let newDiv = document.createElement('div');
            newDiv.innerHTML = from + ' 对 ' + to + ' 说：' + msg;
            newDiv.className = 'row';

            // 3. 把新的 div 加入到页面中
            let container = document.querySelector('.container');
            container.appendChild(newDiv);

            // 4. 清空 input 
            for (let i = 0; i < inputs.length; i++) {
                inputs[i].value = '';
            }

            // 5. 把当前的输入框的数据, 构造成一个 post 请求, 发给服务器
            
            // JS 中, 这里的 key 引号可以带也可以不带, 都是字符串类型
            let body = {
                'from': from,
                to: to,
                message: msg
            }
            $.ajax({
                'type': 'post',
                url: 'message',
                contentType: 'application/json;charset=utf8',
                data: JSON.stringify(body),
                success: function(body) {
                    alert("消息提交成功");
                    console.log(body);
                },
                error: function() {
                    alert("消息提交失败!");
                }
            });
        }
    </script>
</body>
</html>